Java 8 Function之Predicate

16 篇文章 1 订阅
14 篇文章 0 订阅

Java 8 Predicate 示例

java.util.function.Predicate是在java 8中引入的functional interface。Predicate用于分配lambda表达式。functional interface是返回布尔值的test(T t)。当我们将对象传递给这个方法时,它将通过分配的lambda表达式来评估对象。

语法介绍:

    public static void main(String[] args) {
        //接收一个泛型参数,比较返回boolean值
        Predicate<String> predicate = (v1) -> {
            //此处别的逻辑处理,做简单的语法介绍就不详细写了。
            return v1.equals("1");
        };
//        Predicate<String> predicates = (v1) -> v1.equals("2"); 直接返回结果可这样写

        System.out.println(predicate.test("1"));//true
        System.out.println(predicate.test("2"));//false
    }

找到以下两个表达式

Predicate<Student> maleStudent = s-> s.age >= 20 && "male".equals(s.gender);
Predicate<Student> femaleStudent = s-> s.age > 15 && "female".equals(s.gender);

第一个表达式为男性学生创造了场景,第二个表达式为女学生创造了场景。找到完整的例子

public static void main(String[] args){
      Predicate<Student> maleStudent = s-> s.age >= 20 && "male".equals(s.gender);
      Predicate<Student> femaleStudent = s-> s.age > 15 && "female".equals(s.gender);
      
      Function<Student,String> maleStyle = s-> "Hi, You are male and age "+s.age;
      
      Function<Student,String> femaleStyle = s-> "Hi, You are female and age "+ s.age;
      
      Student s1 = new Student(21,"male");
      if(maleStudent.test(s1)){
          System.out.println(s1.customShow(maleStyle));
      }else if(femaleStudent.test(s1)){
          System.out.println(s1.customShow(femaleStyle));
      }      
  } 

在这个例子中,我们创建了两个Predicate,然后创建一个学生对象,我们将它传递给Predicate的测试方法。 

public class Student {
    public int age;
    public String gender;
    public Student(int age,String gender){
        this.age = age;
        this.gender = gender;
    }
    public  String customShow(Function<Student,String> fun){
        return fun.apply(this);
    }
运行示例,输出如下。
Hi, You are male and age 21

Java 8的函数式编程是指引入了函数式接口和lambda表达式等新特性,以便更方便地进行函数式编程。 函数式接口是Java 8中引入的一种特殊类型的接口,它只有一个抽象方法,这个方法可以作为函数来被引用。Java 8中提供了一些内置的函数式接口,如Function、Supplier、Predicate等,开发者也可以自定义函数式接口。通过使用函数式接口,我们可以直接将函数作为参数传递给其他方法或者变量,而不需要使用匿名类来实现。 与函数式接口紧密相关的是lambda表达式。lambda表达式是一种简洁的语法,它可以用来代替匿名类的实现方式。通过使用lambda表达式,我们可以更轻松地实现函数式接口中的抽象方法。与匿名类相比,lambda表达式更简洁、更易读,极大地提高了代码的可读性和可维护性。 Java 8的函数式编程还引入了Stream API,它提供了一种集合(包括数组、列表等)处理的新方式。通过使用Stream API,我们可以对集合进行多种操作,如过滤、映射、排序、归约等,而不需要使用繁琐的迭代。Stream API可以大大简化集合的处理,提升代码的简洁程度和执行效率。 总之,Java 8的函数式编程引入了函数式接口和lambda表达式等新特性,使得我们可以更方便地进行函数式编程。这些新特性极大地提高了代码的可读性和可维护性,同时还引入了Stream API等功能,进一步简化了集合的处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值